package dto

import "fmt"

type SearchRbacRoleParams struct {
	Domain   string `json:"domain"`
	Keywords string `json:"keywords"`
	Status   int    `json:"status"`
	IsAll    bool   `json:"is_all"`    //是否全部
	IsSimple bool   `json:"is_simple"` //是否简单返回
}

// RbacRoleSimple 简单返回的role信息
type RbacRoleSimple struct {
	Id int64 `json:"id"`

	Domain string `json:"domain,omitempty"` //所在域（命名空间）
	Name   string `json:"name"`
	Sort   int    `json:"sort"`

	Status int `json:"status"` //0:未知，1：可用，2：禁用
}

// RbacPermissionSimple 简单返回的permission信息
type RbacPermissionSimple struct {
	Id int64 `json:"id"`

	Name   string `json:"name"`
	Path   string `json:"path"` //对应权限路径：页面路径/api路径
	Type   string `json:"type"` //类型, 枚举： menu/action/api，可参考下面的 PermissionType前缀的常量
	Icon   string `json:"icon"`
	Sort   int    `json:"sort"`
	Pid    int64  `json:"pid"`
	Status int    `json:"status"`

	Children []*RbacPermissionSimple `json:"children,omitempty" gorm:"-"` //子权限节点列表
}

func (node *RbacPermissionSimple) NodeId() string {
	return fmt.Sprintf("%d", node.Id)
}

func (node *RbacPermissionSimple) NodePid() string {
	if node.Pid == 0 {
		return ""
	}
	return fmt.Sprintf("%d", node.Pid)
}

func (node *RbacPermissionSimple) NodeName() string {
	return node.Name
}

// PermissionItem 权限节点数据
type PermissionItem struct {
	Id int64 `json:"id"`

	Name     string   `json:"name"`
	Path     string   `json:"path"` //对应权限路径：页面路径/api路径
	Type     string   `json:"type"` //类型, 枚举： menu/action/api，可参考下面的 PermissionType前缀的常量
	Describe string   `json:"describe"`
	Icon     string   `json:"icon"`
	Sort     int      `json:"sort"`
	Pid      int64    `json:"pid"`
	Remark   string   `json:"remark"`
	Status   int      `json:"status"`
	Paths    []string `json:"paths"` //对应的权限路径集合
}
